package com.cskaoyan.controller;

import com.cskaoyan.bean.BaseRespVo;
import com.cskaoyan.bean.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

/**
 * @author stone
 * @date 2022/08/08 09:08
 */
@RestController
@RequestMapping("upload")
public class FileUploadController {

    //localhost:8080/upload/file
    @RequestMapping("file")
    public BaseRespVo uploadFile(MultipartFile myfile) throws IOException {
        //transferTo → 需要提供File这样的形参 → 指定保存文件的位置
        // 比如我要上传到d：//tmp目录，并且文件名叫bingbing.jpg
        //myfile.transferTo(new File("d://tmp/bingbing.jpg"));
        //myfile.transferTo(new File("d://tmp/","bingbing.jpg"));

        // 如果我们构造的File，文件名相同，会导致覆盖
        // 可以起不同的名字的File:  1、生成随机值; 2、获得原始的文件名（也是有可能重复的）

        // 可以获得一些其他的信息 → MultipartFile提供的方法
        String originalFilename = myfile.getOriginalFilename(); //原始文件名
        String random = UUID.randomUUID().toString().replaceAll("-", "");

        String name = myfile.getName(); // 获得请求参数名 → myfile

        String contentType = myfile.getContentType(); // 获得正文类型 image/jpeg → 文件的类型类型

        long size = myfile.getSize(); // 获得文件的大小

        // dlrb.jpg → ["drlb","jpg"]
        String[] split = originalFilename.split("\\.");
        String fileName = random + "." + split[split.length - 1];

        // 也可以这样子去做拆分，找到最后一个点的位置，截取最后一点到最后位置的字符串 → 留给你们实现

        File file = new File("d://tmp/", fileName);
        myfile.transferTo(file);

        return BaseRespVo.ok(null);
    }

    //localhost:8080/upload/files
    // 接收多个文件 → MultipartFile数组
    @RequestMapping("files")
    public BaseRespVo uploadFiles(MultipartFile[] myfiles) throws IOException {
        for (MultipartFile myfile : myfiles) {

            String originalFilename = myfile.getOriginalFilename(); //原始文件名
            String random = UUID.randomUUID().toString().replaceAll("-", "");

            String[] split = originalFilename.split("\\.");
            if (split.length <= 1) {
                //ctrl + alt + L → 并不建议用
                // 调整的是当前文件的全部格式
            }
            String fileName = random + "." + split[split.length - 1];

            // 也可以这样子去做拆分，找到最后一个点的位置，截取最后一点到最后位置的字符串 → 留给你们实现

            File file = new File("d://tmp/", fileName);


            myfile.transferTo(file);
        }
        User data = getUser();
        return BaseRespVo.ok(null, data);
    }

    private User getUser() {
        User data = new User();
        return data;
    }

}
